--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test/test_functions.py main (dac94b89) Text, 11.99 KB
T8b949e#!/usr/bin/env python3
T8b949e# nomadForum - a forum on the NomadNetwork
T8b949e# Copyright (C) 2023-2026 AutumnSpark1226
T8b949e#
T8b949e# This program is free software: you can redistribute it and/or modify
T8b949e# it under the terms of the GNU General Public License as published by
T8b949e# the Free Software Foundation, either version 3 of the License, or
T8b949e# (at your option) any later version.
T8b949e#
T8b949e# This program is distributed in the hope that it will be useful,
T8b949e# but WITHOUT ANY WARRANTY; without even the implied warranty of
T8b949e# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
T8b949e# GNU General Public License for more details.
T8b949e#
T8b949e# You should have received a copy of the GNU General Public License
T8b949e# along with this program. If not, see <https://www.gnu.org/licenses/>.
Tff7b72import T7ee787os
Tff7b72import T7ee787sys
Tff7b72import T7ee787unittest
Te6edf3sysTff7b72.Td2a8ffpathTff7b72.Td2a8ffextendTb4b4b4(Tb4b4b4[Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffabspathTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Tff7b72__file__Tb4b4b4)Tb4b4b4, Te6edf3osTff7b72.Td2a8ffpardirTb4b4b4)Tb4b4b4)Tb4b4b4]Tb4b4b4)
Tff7b72import T7ee787main
Tff7b72class T56d364TestFunctionsTb4b4b4(Te6edf3unittestTff7b72.Td2a8ffTestCaseTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8fftest_check_usernameTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# test "normal" usernames
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# test double space
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftest userTa5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# test unprintable characters
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftestβuserTa5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# test possible injections
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftestTa5d6ff'Ta5d6ffuserTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftestTffea00\\Ta5d6ffuserTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff'Ta5d6fftestTa5d6ff"Ta5d6ffuserTa5d6ff'Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftest`userTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftestTffea00\nTa5d6ffuserTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"""Ta5d6fftest
Ta5d6ff userTa5d6ff"""Tb4b4b4)
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftest[userTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftest]userTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6fftestTffea00\\Ta5d6ff`userTa5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# test "ADMIN" username
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffadminTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffADMINTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffaDmINTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffADMINTa5d6ff"Tb4b4b4, Te6edf3allow_adminTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffadminTa5d6ff"Tb4b4b4, Te6edf3allow_adminTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffaDmINTa5d6ff"Tb4b4b4, Te6edf3allow_adminTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4)
T8b949e# test "SYSTEM" username
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffsystemTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffSYSTEMTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffSysTEmTa5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# test "[DELETED]"
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ff[DELETED]Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ff[deleted]Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ff[DeLeTeD]Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffDELETEDTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffdeletedTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ffDeLeTeDTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ff(DELETED)Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ff(deleted)Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Ta5d6ff(DeLeTeD)Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Tffd700{DELETED}Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Tffd700{deleted}Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Ta5d6ff"Tffd700{DeLeTeD}Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_check_display_nameTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# test "normal" usernames
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# test unprintable characters
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftestβuserTa5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# test possible injections
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftestTffea00\nTa5d6ffuserTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"""Ta5d6fftest
Ta5d6ff userTa5d6ff"""Tb4b4b4)
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest[userTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest]userTa5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# test "SYSTEM" username
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffsystemTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffSYSTEMTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffSysTEmTa5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# test "[DELETED]"
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff[DELETED]Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff[deleted]Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff[DeLeTeD]Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffDELETEDTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffdeletedTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffDeLeTeDTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff(DELETED)Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff(deleted)Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff(DeLeTeD)Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Tffd700{DELETED}Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Tffd700{deleted}Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_display_nameTb4b4b4(Ta5d6ff"Tffd700{DeLeTeD}Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_check_uuidTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# test some uuids
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_uuidTb4b4b4(Ta5d6ff"Ta5d6ff90d40ea4-1391-4901-aee5-324f12bdbbd6Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertTrueTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_uuidTb4b4b4(Ta5d6ff"Ta5d6ff00000000-0000-0000-0000-000000000000Ta5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# not real uuids
T8b949e# wrong length
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_uuidTb4b4b4(Ta5d6ff"Ta5d6ff27f7e01-e46d-47bd-834e-a4c87ad88c59Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_uuidTb4b4b4(Ta5d6ff"Ta5d6ff27f74e01-e46d-47bd-834e-a4c87ad88c590Ta5d6ff"Tb4b4b4)Tb4b4b4)
T8b949e# wrong character
Tff7b72selfTff7b72.Td2a8ffassertFalseTb4b4b4(Te6edf3mainTff7b72.Td2a8ffcheck_uuidTb4b4b4(Ta5d6ff"Ta5d6ff27f74e01-e46d-47bd-834e-a4c87ax88c59Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_prepare_contentTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# nothing to replace
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_contentTb4b4b4(Ta5d6ff"Ta5d6ffThis is a test! πTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is a test! πTa5d6ff"
Tb4b4b4)
T8b949e# replace \
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_contentTb4b4b4(Ta5d6ff"Ta5d6ffThis is a test!Tffea00\\Ta5d6ff πTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is a test!Tffea00\\Tffea00\\Ta5d6ff πTa5d6ff"
Tb4b4b4)
T8b949e# replace '
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_contentTb4b4b4(Ta5d6ff"Ta5d6ffThis is a test!Ta5d6ff'Ta5d6ff πTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is a test!Ta5d6ff'Ta5d6ff'Ta5d6ff πTa5d6ff"
Tb4b4b4)
T8b949e# replace #
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_contentTb4b4b4(Ta5d6ff"Ta5d6ffThis is a test!Tffea00\nTa5d6ff# πTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is a test!Tffea00\nTffea00\\Ta5d6ff# πTa5d6ff"
Tb4b4b4)
T8b949e# replace `=
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_contentTb4b4b4(Ta5d6ff"Ta5d6ffThis is a test!`= πTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is a test!Tffea00\\Ta5d6ff`= πTa5d6ff"
Tb4b4b4)
Tff7b72def Td2a8fftest_prepare_display_nameTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# test "normal" usernames
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_test2Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
T8b949e# test unprintable characters
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftestβuserTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
T8b949e# test possible injections
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftestTffea00\nTa5d6ffuserTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(
T8b949e"""test
user"""Tb4b4b4,
Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4,
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest[userTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest]userTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
T8b949e# test "SYSTEM" username
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffsystemTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffSYSTEMTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffSysTEmTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)
T8b949e# test "[DELETED]"
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff[DELETED]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff[deleted]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff[DeLeTeD]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffDELETEDTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffdeletedTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ffDeLeTeDTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff(DELETED)Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff(deleted)Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6ff(DeLeTeD)Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Tffd700{DELETED}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Tffd700{deleted}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Tffd700{DeLeTeD}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"
Tb4b4b4)
T8b949e# replace \
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftestTffea00\\Ta5d6ffuserTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftestTffea00\\Tffea00\\Ta5d6ffuserTa5d6ff"
Tb4b4b4)
T8b949e# replace '
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftestTa5d6ff'Ta5d6ffuserTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftestTa5d6ff'Ta5d6ff'Ta5d6ffuserTa5d6ff"
Tb4b4b4)
T8b949e# replace `=
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest`=userTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftestuserTa5d6ff"
Tb4b4b4)
T8b949e# replace `c`
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest`cuserTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftestuserTa5d6ff"
Tb4b4b4)
T8b949e# replace `a
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest`auserTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftestuserTa5d6ff"
Tb4b4b4)
T8b949e# replace `r
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest`ruserTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftestuserTa5d6ff"
Tb4b4b4)
T8b949e# replace `<
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_display_nameTb4b4b4(Ta5d6ff"Ta5d6fftest`<userTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftest_userTa5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6fftestuserTa5d6ff"
Tb4b4b4)
Tff7b72def Td2a8fftest_prepare_titleTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# test "normal" titles
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_titleTb4b4b4(Ta5d6ff"Ta5d6ffThis is a cool title!Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is a cool title!Ta5d6ff"
Tb4b4b4)
T8b949e# test newline
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Te6edf3mainTff7b72.Td2a8ffprepare_titleTb4b4b4(Ta5d6ff"Ta5d6ffThis is aTffea00\nTa5d6ffcool title!Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is aTa5d6ff"Tb4b4b4)
T8b949e# test \
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_titleTb4b4b4(Ta5d6ff"Ta5d6ffThis is aTffea00\\Ta5d6ffcool title!Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is aTffea00\\Tffea00\\Ta5d6ffcool title!Ta5d6ff"
Tb4b4b4)
T8b949e# test '
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_titleTb4b4b4(Ta5d6ff"Ta5d6ffThis is aTa5d6ff'Ta5d6ffcool title!Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is aTa5d6ff'Ta5d6ff'Ta5d6ffcool title!Ta5d6ff"
Tb4b4b4)
T8b949e# test `
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffprepare_titleTb4b4b4(Ta5d6ff"Ta5d6ffThis is a`cool title!Ta5d6ff"Tb4b4b4)Tb4b4b4, Ta5d6ff"Ta5d6ffThis is aTffea00\\Ta5d6ff`cool title!Ta5d6ff"
Tb4b4b4)
Tff7b72def Td2a8fftest_remove_micronTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
T8b949e# test "normal" text
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffremove_micronTb4b4b4(
Ta5d6ff"Ta5d6ffLorem ipsum dolor sit amet, consectetuer adipiscing elit.Ta5d6ff"
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffLorem ipsum dolor sit amet, consectetuer adipiscing elit.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
T8b949e# test text color change
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffremove_micronTb4b4b4(
Ta5d6ff"Ta5d6ff`F782Lorem ipsum dolor sit amet, consectetuer adipiscing elit.`fTa5d6ff"
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffLorem ipsum dolor sit amet, consectetuer adipiscing elit.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
T8b949e# test background color change
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffremove_micronTb4b4b4(
Ta5d6ff"Ta5d6ff`B782Lorem ipsum dolor sit amet, consectetuer adipiscing elit.`bTa5d6ff"
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffLorem ipsum dolor sit amet, consectetuer adipiscing elit.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
T8b949e# test other markup options
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffremove_micronTb4b4b4(
Ta5d6ff"Ta5d6ff`cLorem `*ipsum`*`a dolor `!sit`! am`et, ``consec`rtetuer `_adipiscing`_ elit.`bTa5d6ff"
Tb4b4b4)Tb4b4b4,
Ta5d6ff"Ta5d6ffLorem ipsum dolor sit amTa5d6ff'Ta5d6ffet, consectetuer adipiscing elit.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8fftest_keygenerationTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3mainTff7b72.Td2a8ffget_MultiFernetTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8fftest_encryptionTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3plaintext Tff7b72= Tb4b4b4(
Ta5d6ff"Ta5d6ffHello, this is a text!π (The emoji is here to test unicode support)Ta5d6ff"
Tb4b4b4)
Te6edf3encrypted Tff7b72= Te6edf3mainTff7b72.Td2a8ffencryptTb4b4b4(Te6edf3plaintextTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertNotEqualTb4b4b4(Te6edf3plaintextTb4b4b4, Te6edf3encryptedTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertEqualTb4b4b4(Te6edf3plaintextTb4b4b4, Te6edf3mainTff7b72.Td2a8ffdecryptTb4b4b4(Te6edf3encryptedTb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_get_verification_codeTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3code Tff7b72= Te6edf3mainTff7b72.Td2a8ffget_verification_codeTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffassertRegexTb4b4b4(Te6edf3codeTb4b4b4, Ta5d6ff"Tffea00\\Ta5d6ffdTffd700{3}Ta5d6ff-Tffea00\\Ta5d6ffdTffd700{3}Ta5d6ff"Tb4b4b4)
Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Te6edf3unittestTff7b72.Td2a8ffmainTb4b4b4(Tb4b4b4)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ